有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java属性:如何转义#(散列)

如何在Java属性文件中转义哈希符号(#

我们有一个使用Java属性文件的国际化框架

有一个名为number的列,我们希望它的标题为#。这个

number=#

。。。不起作用


共 (4) 个答案

  1. # 1 楼答案

    由于Java中的默认转义字符是'\',请尝试用它转义散列

  2. # 2 楼答案

    哈希(#)在属性文件中用\字符转义。例如,要将键#foo映射到值#bar,您可以编写:

    \#foo=\#bar
    

    它适用于键和值,尽管(如其他答案中所暗示的)值并不严格要求它

  3. # 3 楼答案

    此选项应在没有任何转义字符的情况下工作:

    number=#
    

    刚刚用代码做了一个小测试

    prop.load(new FileInputStream ("./res/app.properties"));
    System.out.println("Property: " +prop.getProperty("Number"));
    

    。。。和属性文件(注意大写/小写):

    Number=#
    Text=test
    

    结果:

    Property: #
    

    因此,请检查您的拼写、大小写或进一步处理

    查看thisthat one(也链接Java文档)了解更多信息

    p.s.:虽然不需要它,但您也可以尝试Unicode序列:\u0023

    干杯

  4. # 4 楼答案

    在以下情况下,我在寻找如何正确逃生时发现了这个问题(不起作用):

    zendesk.ticket.subject.prefix=#{{ticket.id}}

    在这种情况下,它需要转义,否则会发生以下异常:

    Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'createTicketService' defined in file [/Users/***]: Unsatisfied dependency expressed through constructor parameter 6; nested exception is org.springframework.beans.factory.BeanExpressionException: Expression parsing failed; nested exception is org.springframework.expression.spel.SpelEvaluationException: EL1008E: Property or field 'ticket' cannot be found on object of type 'org.springframework.beans.factory.config.BeanExpressionContext' - maybe not public?
        at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:749)
        at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:189)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1193)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1095)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
        at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:208)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1138)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066)
        at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:835)
        at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741)
        ... 64 common frames omitted
    Caused by: org.springframework.beans.factory.BeanExpressionException: Expression parsing failed; nested exception is org.springframework.expression.spel.SpelEvaluationException: EL1008E: Property or field 'ticket' cannot be found on object of type 'org.springframework.beans.factory.config.BeanExpressionContext' - maybe not public?
        at org.springframework.context.expression.StandardBeanExpressionResolver.evaluate(StandardBeanExpressionResolver.java:164)
        at org.springframework.beans.factory.support.AbstractBeanFactory.evaluateBeanDefinitionString(AbstractBeanFactory.java:1448)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1088)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066)
        at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:835)
        at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741)
        ... 78 common frames omitted
    Caused by: org.springframework.expression.spel.SpelEvaluationException: EL1008E: Property or field 'ticket' cannot be found on object of type 'org.springframework.beans.factory.config.BeanExpressionContext' - maybe not public?
        at org.springframework.expression.spel.ast.PropertyOrFieldReference.readProperty(PropertyOrFieldReference.java:226)
        at org.springframework.expression.spel.ast.PropertyOrFieldReference.getValueInternal(PropertyOrFieldReference.java:94)
        at org.springframework.expression.spel.ast.PropertyOrFieldReference.getValueInternal(PropertyOrFieldReference.java:81)
        at org.springframework.expression.spel.ast.CompoundExpression.getValueRef(CompoundExpression.java:51)
        at org.springframework.expression.spel.ast.CompoundExpression.getValueInternal(CompoundExpression.java:87)
        at org.springframework.expression.spel.ast.SpelNodeImpl.getValue(SpelNodeImpl.java:120)
        at org.springframework.expression.spel.ast.InlineList.getValueInternal(InlineList.java:95)
        at org.springframework.expression.spel.ast.SpelNodeImpl.getTypedValue(SpelNodeImpl.java:131)
        at org.springframework.expression.spel.standard.SpelExpression.getValue(SpelExpression.java:297)
        at org.springframework.expression.common.CompositeStringExpression.getValue(CompositeStringExpression.java:105)
        at org.springframework.expression.common.CompositeStringExpression.getValue(CompositeStringExpression.java:42)
        at org.springframework.context.expression.StandardBeanExpressionResolver.evaluate(StandardBeanExpressionResolver.java:161)
        ... 83 common frames omitted
    

    a解决方案是使用#{'#'},最终结果是(工作):

    zendesk.ticket.subject.prefix=#{'#'}{{ticket.id}}